iT邦幫忙

DAY 16
0

學習技術筆記系列 第 11

Day16[C++]實作爬樓梯(非遞迴版)

  • 分享至 

  • xImage
  •  

題目:爬樓梯,往上爬一次可爬1步或是2步,不可往下走

輸入:樓梯階數

輸出:印出可能的步數,及總共的排列可能數目

#include <algorithm>
#include <iostream>
#include <string>
using namespace std;
int main() {
for(int n; cin >> n; ) {
int dispN = n >> 1, count = 0;

for(int i = 0; i <= dispN; ++i) {
int diff = n - (i << 1); // 用兩個1 步換一個2步
string str_1(diff, '1'), str_2(i, '2'), str = str_1 + str_2; // 擺放當下符合階數1 步、2 步的可能

do
cout << str << endl;// 印出1 步 和 2步 的全排列
while(++count && next_permutation(str.begin(), str.end()));// 把排序好的步數做全排列 。 Count 記錄可能的方法數
}
cout << "Count: " << count << endl << endl;
}
return 0;
}

執行畫面


上一篇
Day14[VMware]vCenter Server SSO AD簡易圖
下一篇
Day17[C++]實作爬樓梯(遞迴版)
系列文
學習技術筆記22
圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言